#!/usr/bin/env python
# coding: utf-8
'''
微信：
Date：20180918
Author：lizm
Description：给指定朋友定时发送信息
'''
from __future__ import unicode_literals
from threading import Timer
from wxpy import *
import requests
import re
import os
import time
from ShowapiRequest import ShowapiRequest
import w3c
import tulingBot
import logging
import random
import bdhot
import traceback
# 初始化机器人，扫码登陆
bot = Bot(cache_path=True,console_qr=2)
#bot = Bot(console_qr=2,cache_path="botoo.pkl") #这里的二维码是用像素的形式打印出来！

def test1():
    w3c_l = w3c.JsW3c().start()
    l = len(w3c_l)
    del w3c_l[0]
    # for item in w3c_l:
    #     print(item)
    index=0
    while l>0:
        print(w3c_l[index]['menu_url'])
        dat=w3c.JsW3c().child_url_contents(w3c_l[index]['menu_url'])
        content_l=len(dat)
        if(content_l) >0:
            content_l-=1
            content_item=dat[content_l]
            send_msg=''.join([content_item['name'],content_item['subname'],content_item['example']])
        else:
            send_msg=get_words()
        index+=1
        l-=1

        time.sleep(15)
def get_news1():
    #获取金山词霸每日一句，英文和翻译
    url = "http://open.iciba.com/dsapi/"
    r = requests.get(url)
    contents = r.json()['content']
    translation= r.json()['translation']
    return contents,translation
def get_groups():
    my_friend_group = bot.groups()
    da=my_friend_group.search('大宝剑')
    print(my_friend_group,da)
def get_words():
    con = requests.get('https://www.liutianyou.com/api/?type=js&charset=utf-8')
    # print(con.content.decode('utf-8'))
    #字节无法匹配，需要解码成字符串
    res = re.findall("document.write\('(.*?)'\);", con.content.decode('utf-8'))
    return res[0]

def send_news():
    try:
        my_friend = bot.friends().search(u'A王兰兰18852075410\n15651775361')[0] #你朋友的微信名称，不是备注，也不是微信帐号。
        # mid=send_img()
        # fileDir=os.getcwd()+'/img/tenor.gif'
        # bot.core.send_image(fileDir=fileDir,toUserName=u'A王兰兰18852075410\n15651775361')
        # my_friend.send(get_news1()[0])
        # my_friend.send(get_news1()[1][5:])
        # phs=get_words()
        # my_friend.send(phs)
        flag=True
        if flag:
            r_data=get_ph()

        num=len(r_data)

        while num > 0:
            my_friend.send(r_data[num-1])
            num -= 1
            time.sleep(20)
            flag = False
        # t = Timer(10, send_news)  # 每86400秒（1天），发送1次，不用linux的定时任务是因为每次登陆都需要扫描二维码登陆，很麻烦的一件事，就让他一直挂着吧
        # t.start()


    except Exception as e:
        print(e)

def send_news_group():
    try:
        my_friend_group = bot.groups().search(u'大宝剑')[0]  # 你朋友的微信名称，不是备注，也不是微信帐号。

        # my_friend.send(get_news1()[0])
        # my_friend.send(get_news1()[1][5:])
        w3c_l = w3c.JsW3c().start()
        l = len(w3c_l)
        del w3c_l[0]
        del w3c_l[1]
        del w3c_l[2]
        del w3c_l[3]
        del w3c_l[4]
        del w3c_l[5]
        del w3c_l[6]
        # for item in w3c_l:
        #     print(item)
        index = 0
        while l > 0:
            # print(w3c_l[index]['menu_url'])
            dat = w3c.JsW3c().child_url_contents(w3c_l[index]['menu_url'])
            print(dat)
            content_l = len(dat)
            if (content_l) > 0:
                content_l -= 1
                content_item = dat[content_l]
                send_msg = ''.join([content_item['name'], content_item['subname'], content_item['example']])
            else:
                send_msg = get_words()
            index += 1
            l -= 1
            my_friend_group.send(send_msg)
            time.sleep(20)

        # while True:
        #     phs = get_words()
        #     my_friend_group.send(phs)
        #     time.sleep(25)
        # bot.core.send_image(toUserName=u'万里千寻',mediaId=send_img())

        # t = Timer(15, send_news_group)  # 每86400秒（1天），发送1次，不用linux的定时任务是因为每次登陆都需要扫描二维码登陆，很麻烦的一件事，就让他一直挂着吧
        # t.start()
    except:
        my_friend_group = bot.groups().search('大宝剑')[0]  # 你的微信名称，不是微信帐号。
        jinshan=get_news1()
        my_friend_group.send(jinshan[0]+jinshan[1])
def send_news_group1():
    try:
        my_friend_group = bot.groups().search(u'大宝剑')[0]  # 你朋友的微信名称，不是备注，也不是微信帐号。

        flag = True
        if flag:
            r_data = get_ph()

        num = len(r_data)

        while num > 0:
            my_friend_group.send(r_data[num - 1])
            num -= 1
            time.sleep(20)
            flag = False
    except:
        my_friend_group = bot.groups().search('大宝剑')[0]  # 你的微信名称，不是微信帐号。
        my_friend_group.send(u"今天到此结束，明日再来")
def send_img():
    file_path=os.getcwd()+'\\img\\tenor.gif'
    return bot.upload_file(file_path)

def senf_to_filehelper():

    bot.file_helper.send('Hello from wxpy!')
def get_ph():
    try:
        r = ShowapiRequest("http://route.showapi.com/1635-1", "98606", "de445ee146fe49a0a8080a6c9bf0bb99")
        r.addBodyPara("page", "1")
        # r.addFilePara("img", r"C:\Users\showa\Desktop\使用过的\4.png") #文件上传时设置
        res = r.post()
        data = res.json()

        if data.get('showapi_res_code') != 0:
            return []
        apilist = data.get('showapi_res_body')
        newlist = []
        for item in apilist.get('contentlist'):
            newlist.append('%s --- %s' % (item.get('question'),item.get('answer')))

        return newlist
    except Exception as e:
        print(e)
def test():
    my_friend_group = bot.groups().search('大宝剑')[0]
    # my_friend_group = bot.friends().search(u'A王兰兰18852075410\n15651775361')[0]
    # my_friend_group = bot.friends().search(u'辰辰')[0]
    # my_friend_group.send_file(os.getcwd() + '\\img\\1.png')
    # print(my_friend_group)
    # exit()
    # logging.basicConfig(filename="test.log", filemode="w",
    #                     format="%(asctime)s %(name)s:%(levelname)s:%(message)s",
    #                     datefmt="%d-%M-%Y %H:%M:%S", level=logging.DEBUG)
    print('111', bot.messages)
    tuBot=tulingBot.LiliBot()
    @bot.register(my_friend_group,PICTURE)
    def rec_group_img(msg):
        try:
            print('1', msg.text, msg.type)
            if msg.type=='Picture':
                # hot=['王宝强','了不起','很牛','浪起来','心情倍爽']
                hot=bdhot.get_hot_words()
                if len(hot)==0:
                    hot = ['王宝强', '了不起', '很牛', '浪起来', '心情倍爽']
                r=tuBot.get_img(hot[random.randint(0, len(hot))])
                p=tuBot.save_img(r[0])
                print('----',r,p)

                time.sleep(1)
                # logging.info(''.join(r)+p)
                if r[1]:
                    if p :
                         my_friend_group.send_image(os.getcwd()+'/img/'+p)
                    else:
                        return '尼古拉斯-赵四，杰森斯坦森-郭达,爱你么么哒'
                else:
                     my_friend_group.send_file(os.getcwd()+'/img/'+p)
                 # return tuBot.get_message('今天天气')
            elif msg.type=='Text':
                return tuBot.get_message(msg.text)
        except:
            print(traceback.print_exc())
            print('1', msg.text, msg.type)
    @bot.register(my_friend_group, TEXT,except_self=True)
    def rec_group_msg(msg):
        try:
            # 打印所有*群聊*对象中的*文本*消息
            print('3', msg.text,msg.type,msg.type=='Picture',msg.type=='Text')

            time.sleep(1)
            rand=random.randint(0, 15)
            if  rand in [1,3,5,7,9]:
                return '尼古拉斯-赵四，杰森斯坦森-郭达,爱你么么哒'
            else:
                return tuBot.get_message(msg.text)
            # bot.start()
            # 如果是群聊，但没有被 @，则不回复
            # return get_words()
            # if isinstance(msg.chat, Group) and not msg.is_at:
            #     return
            # else:
            #     # 回复消息内容和类型
            #     return '收消息: {} ({})'.format(msg.text, msg.type)
        except Exception as e:
            # logging.info(e)
            return '尼古拉斯-赵四，杰森斯坦森-郭达,爱你么么哒'
    embed()




if __name__ == "__main__":
    # send_news()
    # test()
    # send_news_group()
    # senf_to_filehelper()
    # rec_group_msg()
    test()
    # get_groups()